ASP.NET Core-এ একটি রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করতে, SignalR প্রযুক্তি ব্যবহার করা হয়। SignalR হল একটি লাইব্রেরি যা রিয়েল-টাইম, ডুয়াল-ডাইরেকশনাল ওয়েব যোগাযোগের জন্য ব্যবহৃত হয়, যেখানে সার্ভার এবং ক্লায়েন্টের মধ্যে ডাটা একে অপরকে তাত্ক্ষণিকভাবে পাঠানো যায়। এটি ওয়েব অ্যাপ্লিকেশনগুলির জন্য খুবই গুরুত্বপূর্ণ, যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ আপডেট এবং নোটিফিকেশন সিস্টেম।
ASP.NET Core SignalR ব্যবহার করে খুব সহজেই একটি রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করা সম্ভব।
প্রথমে SignalR ইনস্টল করতে হবে এবং আপনার ASP.NET Core প্রজেক্টে সেটি কনফিগার করতে হবে।
SignalR এর প্যাকেজ ইনস্টল করতে Microsoft.AspNetCore.SignalR প্যাকেজটি NuGet থেকে ইনস্টল করুন:
dotnet add package Microsoft.AspNetCore.SignalR
SignalR অ্যাপ্লিকেশনটি Hub ক্লাসের মাধ্যমে পরিচালিত হয়। Hub হল SignalR এর কম্পোনেন্ট যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ তৈরি করে। ক্লায়েন্টরা Hub-কে কানেক্ট করে এবং সার্ভার থেকে মেসেজ পায় বা সার্ভারে মেসেজ পাঠায়।
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
// সার্ভার থেকে ক্লায়েন্টে মেসেজ পাঠানো
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
এখানে SendMessage
মেথডটি সার্ভারের মাধ্যমে সমস্ত কানেক্টেড ক্লায়েন্টকে মেসেজ পাঠানোর কাজ করে। Clients.All.SendAsync
এর মাধ্যমে সার্ভার থেকে সমস্ত ক্লায়েন্টে মেসেজ পাঠানো হয়।
SignalR কাজ করার জন্য Startup.cs ফাইলে কিছু কনফিগারেশন করা প্রয়োজন। এখানে ConfigureServices
এবং Configure
মেথডে SignalR কনফিগার করা হয়।
ConfigureServices
মেথডে SignalR কনফিগারেশনpublic void ConfigureServices(IServiceCollection services)
{
services.AddSignalR(); // SignalR সেবা যোগ করা
}
Configure
মেথডে SignalR ব্যবহারpublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseRouting();
// SignalR Hub ম্যাপ করা
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub"); // SignalR Hub এর URL ম্যাপ করা
});
}
এখানে MapHub
মেথডের মাধ্যমে SignalR Hub কে একটি URL এর সাথে ম্যাপ করা হয়েছে। এই URL-টি চ্যাট অ্যাপ্লিকেশনের ক্লায়েন্ট সাইডে ব্যবহার করা হবে।
SignalR ক্লায়েন্ট সাইডে ব্যবহারের জন্য, SignalR JavaScript Client লাইব্রেরি ব্যবহার করতে হবে।
প্রথমে, SignalR JavaScript Client লাইব্রেরি ইনস্টল করতে হবে। এটি npm বা CDN মাধ্যমে করা যেতে পারে। যদি আপনি npm ব্যবহার করেন, তাহলে নিচের কমান্ডটি রান করুন:
npm install @microsoft/signalr
যদি আপনি CDN ব্যবহার করতে চান, তবে এই স্ক্রিপ্টটি HTML ফাইলে যুক্ত করুন:
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/3.1.13/signalr.min.js"></script>
এখন, ক্লায়েন্ট সাইডে SignalR Hub-এ কানেক্ট হতে হবে এবং মেসেজ পাঠানো এবং প্রাপ্তির জন্য কোড লিখতে হবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chat App</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/3.1.13/signalr.min.js"></script>
</head>
<body>
<h2>Chat Application</h2>
<div id="messagesList"></div>
<input type="text" id="userInput" placeholder="Enter your name">
<input type="text" id="messageInput" placeholder="Type a message">
<button id="sendMessageButton">Send</button>
<script>
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
// মেসেজ রিসিভ করার জন্য ক্লায়েন্ট সাইডে মেথড ডিফাইন করা
connection.on("ReceiveMessage", function (user, message) {
const msg = user + ": " + message;
const msgList = document.getElementById("messagesList");
const newMessage = document.createElement("div");
newMessage.textContent = msg;
msgList.appendChild(newMessage);
});
// SignalR কানেক্ট হওয়া
connection.start().catch(function (err) {
return console.error(err.toString());
});
// মেসেজ পাঠানোর জন্য ফাংশন
document.getElementById("sendMessageButton").addEventListener("click", function () {
const user = document.getElementById("userInput").value;
const message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message)
.catch(function (err) {
return console.error(err.toString());
});
});
</script>
</body>
</html>
এখানে, ক্লায়েন্ট সাইডে SignalR কানেকশন তৈরি করা হয়েছে এবং ReceiveMessage
নামক মেথডের মাধ্যমে সার্ভার থেকে প্রাপ্ত মেসেজ UI-তে দেখানো হচ্ছে। এছাড়া, SendMessage মেথডটি ব্যবহারকারীর ইনপুট নিয়ে সার্ভারে পাঠানো হচ্ছে।
ASP.NET Core এবং SignalR ব্যবহার করে রিয়েল-টাইম চ্যাট অ্যাপ্লিকেশন তৈরি করা অত্যন্ত সহজ। SignalR ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম যোগাযোগ স্থাপন করে, যা চ্যাট অ্যাপ্লিকেশনগুলোর জন্য আদর্শ। SignalR হাব ব্যবহার করে মেসেজ প্রেরণ এবং গ্রহণ করা হয়, এবং ক্লায়েন্ট সাইডে JavaScript লাইব্রেরি দিয়ে মেসেজ পাঠানো ও গ্রহণ করা সম্ভব হয়। এই প্রক্রিয়াটি ওয়েব অ্যাপ্লিকেশনের জন্য রিয়েল-টাইম ইন্টারঅ্যাকটিভ ফিচার তৈরি করতে সহায়তা করে।
common.read_more